package com.topView2;

/**
 * 给定一个长度为 n 的整数数组 height 。有 n 条垂线，第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
 * <p>
 * 找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
 * <p>
 * 返回容器可以储存的最大水量。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/container-with-most-water
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @Author: huangzhigao
 * @Date: 2023/2/11 16:58
 */
public class leecode11 {

    /**
     * 能取得水的面积 area = Math.min(height[left],height[right]) * (right-left)
     * 取决于短的那个
     * 当最小的短板往内移动，可能使最小值变得更大
     * 当移动最长的短板，则结果只能更小，不会增大
     *
     * @param height
     * @return
     */
    public int maxArea(int[] height) {
        int left = 0;
        int right = height.length - 1;
        int res = 0;
        while (left < right) {
            res = Math.max(res, (right - left)*(height[left] < height[right] ? height[left++] : height[right--]) );
        }
        return res;
    }
}
